#include <iostream>
using namespace std;
// g++ -o test_do_while test_do_while.cc -std=c++11
const char* str_error = "error occured:";
// 在宏里，三个特殊符号的使用，\ 和 # 和 ##
#define FUNC_CLEAN(s1, s2)           \
  do {                               \
    cout << str_##s1 << #s2 << endl; \
  } while (0)

// 使用如下方式do...while+宏来代替goto语句
int main() {
  bool error = false;
  // 如果出现了什么错误，error标志置true
  error = true;
  do {
    if (error) break;
    // dosomething
    cout << "do something!" << endl;
  } while (0);
  FUNC_CLEAN(error, close the connection and clean resources);
}